GENERALIDADES

Métodos Multivariantes

Los MĂ©todos Multivariantes, se pueden definir como un conjunto de tĂ©cnicas estadĂ­sticas que analizan de forma simultĂ¡nea muchas variables.

En general, el anĂ¡lisis multivariante consiste en una serie de formulaciones geomĂ©tricas de base algebraica, las cuales se utilizan para buscar el espacio de mejor ajuste de los puntos filas y puntos columnas, representado asĂ­ grĂ¡ficamente lo mejor posible la matriz de datos original.

Es decir, tienen la venta de analizar de forma simultĂ¡nea a todas las variables, proyectĂ¡ndolas sobre un nĂºmero reducido de nuevas variables aritificiales llamadas componentes, factores o dimensiones que concentran la mayor variabilidad posible de las variables originales.

Por eso se le llaman tambien técnicas de REDUCCION de la dimensionalidad.

GENERALIDADES

Entre los mĂ©todos multivariantes de reducciĂ³n de dimensiones mĂ¡s conocidas, tenemos:

  • AnĂ¡lisis de componentes principales
  • AnĂ¡lisis factoriales
  • Escalamiento multidimensional
  • AnĂ¡lisis de correspondencias

Presentan diferencias entre ellas en sus procedimientos, naturaleza de los datos requeridos y preguntas de investigaciĂ³n asociadas.

AnĂ¡lisis de componentes principales: busca explicar tanta proporciĂ³n de la varianza total de las variables como sea posible. Es decir, agota toda la varianza contenida en las variables originales, las que son repartidas en los componentes principales (nuevas variables).

AnĂ¡lisis factorial: busca entender los constructos (dimensiones o variables latentes) que subyacen los datos. No sustrae toda la variabilidad, sino solo la que es comĂºn entre variables (covarianza).

GENERALIDADES

Escalamiento multidimensional: busca describir las relaciones de distancia/semejanza de los datos.

AnĂ¡lisis de correspondencia: similar al anĂ¡lisis de componentes principales, pero para variables categĂ³ricas.

Uno de los grandes desafĂ­os es entender-interpretar estas nuevas variables, factores o dimensiones en su relaciĂ³n con otras variables que se quieran asociar.

DistribuciĂ³n de la adiposidad en nadadores segĂºn categorĂ­as de pubertad

En esta grĂ¡fica, se observa un patrĂ³n de distribuciĂ³n de grasa tronco-extremidad para el gĂ©nero masculino. Los pliegues de las extremidades (bĂ­ceps, trĂ­ceps, muslo y pantorrilla), se ubican del lado negativo y los pliegues del tronco (subescapular, abdominal, supraespinal y cresta ilĂ­aca), del lado positivo.

Este mĂ©todo, permitiĂ³ detectar la oposiciĂ³n entre los pliegues adiposos de las extremidades en relaciĂ³n a los del tronco

HISTORIA DEL ACP

Harold Hotelling fue un estadĂ­stico matemĂ¡tico estadounidense quien desarrollĂ³ grades contribuciones a los modelos lineales.

Hotelling en 1933 basado en los trabajos previos de Karl Pearson, propone un algoritmo que permite definir los ejes, componentes o factores, a partir de la matriz de correlaciones de los datos originales.

Posteriormente, muchos otros investigadores han contribuido al desarrollo del ACP asĂ­ como del anĂ¡lisis factorial, como: Rao, Kaiser, Burt, Guttman, Benzecri y Lebart, entre otros.

AnĂ¡lisis de Componentes de Principales (ACP)

Idea general del AnĂ¡lisis de Componentes de Principales (ACP)

En muchas ocasiones el investigador se enfrenta a situaciones en las que, para analizar un fenĂ³meno, dispone de informaciĂ³n de muchas variables que estĂ¡n correlacionadas entre sĂ­ en mayor o menor grado.

Estas correlaciones son como un “velo” que impide evaluar adecuadamente el papel que juega cada variable en el fenĂ³meno estudiado.

Cuando se trabaja con demasiada variables que estĂ¡n muy correlacionadas entre sĂ­, su consideraciĂ³n conjunta es redundante y no permite detectar los patrones que subyacen a los datos.

El ACP permite resumir los datos en un nĂºmero menor de variables no correlacionadas, sin perder demasiada informaciĂ³n y permite capturar la “esencia” de esta variaciĂ³n vinculada.

MatemĂ¡ticamente, busca un subespacio de mejor ajuste mĂ­nimo cuadrĂ¡tico que contenga la mayor cantidad posible de informaciĂ³n de la matriz original de datos

AnĂ¡lisis de Componentes de Principales (ACP)

Esquema del ACP

Valor Propio o autovalor (eigenvalue): es un escalar o constante, producto de la diagonalizaciĂ³n de una matriz simĂ©trica y producen un vector no nulo que recogen y distribuyen la varianza de la matriz original de datos

AnĂ¡lisis de Componentes de Principales (ACP)

CaracterĂ­sticas

El anĂ¡lisis de componentes principales (y tambiĂ©n el anĂ¡lisis factorial) son en la prĂ¡ctica anĂ¡lisis de datos exploratorios, ya que no evalĂºan explĂ­citamente hipĂ³tesis nulas.

No toman en cuenta la relaciĂ³n entre variables dependientes e independientes, sino mĂ¡s bien, la asociaciĂ³n general entre los datos, es decir, la estrutura de la nube de puntos.

AsĂ­ mismo, examinan la variaciĂ³n compartida entre un conjunto de variables, la que puede ser modelada matemĂ¡ticamente.

El nuevo conjunto de variables que se obtienen, es igual en nĂºmero al de variables originales.

Las diferencias entre ambos conjuntos de variables radica en que las componentes principales se calculan de forma que estén incorrelacionadas entre sí. Así mismo, estos componentes poseen varianza compartida de todas las variables originales

En ACP, la varianza es llamada Inercia y se entiende como un valor relacionado con la asociaciĂ³n existente en la estructura interna de los datos

Por esta razĂ³n se seleccionan los primeros componentes que contengan mayor varianza (inercia)

AnĂ¡lisis de Componentes de Principales (ACP)

Utilidad

  • Aclaran las relaciones causales
  • Reducen la cantidad de datos que el analista necesita gestionar
  • Permiten que la interacciĂ³n de las relaciones causales se estudie mĂ¡s fĂ¡cilmente
  • Permite detectar las variables que pueden explicar de mejor forma los fenĂ³menos estudiados
  • Permite entender la direcciĂ³n y magnitud de los datos

AnĂ¡lisis de Componentes de Principales (ACP)

RepresentaciĂ³n GeomĂ©trica

Si imaginamos nuestras variables como vectores de igual longitud que emanan de un origen comĂºn, entonces una forma de representar sus relaciones entre sĂ­ es en tĂ©rminos de los Ă¡ngulos que se forman entre ellos.

Un Ă¡ngulo de 90° entre dos vectores indica una ausencia total de correlaciĂ³n, ya que la relaciĂ³n angular entre ellos se obtiene como el coseno de 90° –> cos(90°) = 0, lo que es equivalente con una correlaciĂ³n de 0.

Un Ă¡ngulo de 0° entre dos vectores indica una correlaciĂ³n perfecta positiva, ya que la relaciĂ³n angular entre ellos se obtiene como el coseno de 0° –> cos(0°) = 1, lo que es equivalente con una correlaciĂ³n de 1.

Un Ă¡ngulo de 180° entre dos vectores indica una correlaciĂ³n perfecta negativa, ya que la relaciĂ³n angular entre ellos se obtiene como el coseno de 180° –> cos(180°) = -1, lo que es equivalente con una correlaciĂ³n de -1.

AnĂ¡lisis de Componentes de Principales (ACP)

RepresentaciĂ³n GeomĂ©trica

Por ejemplo, supongamos que tenemos 3 variables y la representamos como vectores en funciĂ³n de sus correlaciones

AnĂ¡lisis de Componentes de Principales (ACP)

RepresentaciĂ³n GeomĂ©trica

Considerando la matriz de correlaciones podemos buscar una nueva variable que tenga la mayor correlaciĂ³n total posible con todas las otras variables, es decir, una variable promedio

AnĂ¡lisis de Componentes de Principales (ACP)

RepresentaciĂ³n GeomĂ©trica

Para conseguir la segunda componente, hay que considerar que, debe estar incorrelacionada con el primera componente, por lo que Ă©sta debe formar un Ă¡ngulo de 90 grados con la PC1, es decir, ortogonalmente. Por tanto trabajamos tomando los angulos:

AnĂ¡lisis de Componentes de Principales (ACP)

RepresentaciĂ³n GeomĂ©trica

Finalmente, el grĂ¡fico de componentes principales permite entender la relaciĂ³n entre las variables originales, dentro del espacio creado por las nuevas variables artificiales (componentes)

AnĂ¡lisis de Componentes de Principales (ACP)

Cada componente posee cargas factoriales asociadas a cada una de las variables originales , las cuales indican de quĂ© manera cada componente “representa” a las variables originales.

Estos valores se obtienen como producto de la raiz del autovalor por el autovector respectivo.

El Autovector (direcciĂ³n) de un componente se obtiene resolviendo el sistema de ecuaciones homogĂ©neo:\((C-\lambda I)\mu=0\). Donde C es la matriz de correlaciones e I es la matriz identidad.

Para ahorrarnos el tedioso calculo del polinomio caracterĂ­stico. Mostramos directamente los resultados.

Cada uno de estos valores se puede interpretar como una correlaciĂ³n de las variables originales con el componente.

AnĂ¡lisis de Componentes de Principales (ACP)

SelecciĂ³n de Componentes

Existen distintas reglas para seleccionar el nĂºmero de componentes, por lo general se consideran aquellos que poseen autovalores mayores a 1. De lo contrario, la varianza explicada es menor que la de las variables originales (valor 1,0).

Este criterio es bastante preciso con un nĂºmero pequeño de variables (entre 10 y 15), pero con un nĂºmero mayor hay que considerar el porcentaje de varianza acumulado.

AnĂ¡lisis de Componentes de Principales (ACP)

Otra forma, es con los grĂ¡ficos de sedimentaciĂ³n y la selecciĂ³n se realiza con la regla del “codo”, donde se precia el cambio repentino en la pendiente de la curva.

AnĂ¡lisis de Componentes de Principales (ACP)

Test previos a la realizaciĂ³n de un ACP

AnĂ¡lisis de Componentes de Principales (ACP)

EXAMEN DE LA MATRIZ DE CORRELACIONES

  • Revisar las correlaciones muy altas o bajas, ya que estas pueden afectar la construcciĂ³n de los componentes o ejes factoriales.

  • Correlaciones muy “altas” pueden enmascarar o distorsionar efecto de otras correlaciones.

  • Correlaciones muy “bajas” pueden no aportar a la construcciĂ³n de componentes o ejes factoriales

AnĂ¡lisis de Componentes de Principales (ACP)

TEST DE ESFERICIDAD DE BARTLETT

  • Comprueba si la matriz de correlaciones es una matriz de identidad.

  • En ausencia de correlaciĂ³n significativa entre las variables, significa que la nube de puntos se ajusta a una esfera perfecta

  • Por lo tanto, la Ho: r = i

  • Si se acepta la hipĂ³tesis nula (p>0.05) significa que las variables no estĂ¡n correlacionadas y por tanto no tiene mucho sentido llevar a cabo un ACP

  • El test tiene una distribuciĂ³n \(Ch^2\)

AnĂ¡lisis de Componentes de Principales (ACP)

INDICE KMO DE KAISER-MEYER-OLKIN

  • Es una medida de la idoneidad de los datos para el anĂ¡lisis factorial.
  • La prueba mide la adecuaciĂ³n del muestreo para cada variable en el modelo y para el modelo completo.
  • Indica la proporciĂ³n de varianza en las variables que pueden ser causadas por factores subyacentes.
  • La medida KMO oscila entre 0 y 1. Un valor bajo corresponde al caso en que no es posible extraer factores. En otras palabras, las observaciones no ponen de manifiesto el modelo que se podrĂ­a imaginar (la muestra es “inadecuada”).
  • Kaiser (1974) recomienda no aceptar un modelo factorial si el KMO es inferior a 0,5.

EJEMPLO DE ACP

Para este ejemplo usaremos nuevamente el data set craneométrico de libre uso de William Howells

Usaremos solo las variables: “GOL”, “NOL”, “BBH”, “ZYB”, “BNL”, “XCB” y “XFB”

library(kableExtra)
library(readxl)
#Cargamos la base completa
base <- read_excel("data/Howell.xls")    

#Seleccionamos las variables
sub_base <- base[ , c("GOL", "NOL", "BBH", "ZYB", 
                      "BNL", "XCB", "XFB")]  

head(sub_base) %>% kbl() %>% 
  kable_classic_2(full_width = F, position = "left")
GOL NOL BBH ZYB BNL XCB XFB
189 185 135 133 100 143 120
182 178 139 137 102 145 120
191 187 123 134 102 140 114
191 188 127 135 100 141 123
178 177 128 129 97 138 117
194 191 132 136 106 139 118

EJEMPLO DE ACP

Realizamos los Test a los datos a fin de validar que sean aptos para un ACP

Prueba de la correlaciĂ³n

cor(sub_base)
          GOL       NOL       BBH       ZYB       BNL       XCB       XFB
GOL 1.0000000 0.9838197 0.5164666 0.5525357 0.7179076 0.2574970 0.2813647
NOL 0.9838197 1.0000000 0.5022812 0.5250130 0.7136548 0.2738495 0.2998215
BBH 0.5164666 0.5022812 1.0000000 0.5486922 0.7035988 0.3094524 0.3124439
ZYB 0.5525357 0.5250130 0.5486922 1.0000000 0.6071792 0.5589706 0.4937993
BNL 0.7179076 0.7136548 0.7035988 0.6071792 1.0000000 0.2273410 0.2368325
XCB 0.2574970 0.2738495 0.3094524 0.5589706 0.2273410 1.0000000 0.7828565
XFB 0.2813647 0.2998215 0.3124439 0.4937993 0.2368325 0.7828565 1.0000000
#Podemos verlo un poco mejor con la funciĂ³n corrplot
library(corrplot)  #Lo cargamos primero
corrplot(cor(sub_base), method ="color", tl.col = "black", tl.srt = 20, addCoef.col ="white", number.digits=3)

EJEMPLO DE ACP

Test o Prueba de esfericidad de Barlett

library(psych)  #Cargamos la librerĂ­a primero
b <- cortest.bartlett(cor(sub_base), n=2524)
b
$chisq
[1] 17375.26

$p.value
[1] 0

$df
[1] 21
#Si queremos verlo como una tabla, podemos hacer lo siguiente:
#Primero psasamos lo valores del objeto a un data frame
bartlett <- data.frame("chisq" = b$chisq, "p.value"=format(b$p.value, scientific = TRUE), "df" = b$df)

#Luego usamos el kableExtra para darle mejor presentaciĂ³n
bartlett %>% kbl() %>% 
  kable_classic_2(full_width = F, position = "left")
chisq p.value df
17375.26 0e+00 21

El test nos dice que el p-valor es muchisimo menor que 0.05, por tanto rechazamos la Ho

EJEMPLO DE ACP

Prueba del KMO (Kaiser-Meyer-Olkin)

KMO(sub_base) 
Kaiser-Meyer-Olkin factor adequacy
Call: KMO(r = sub_base)
Overall MSA =  0.74
MSA for each item = 
 GOL  NOL  BBH  ZYB  BNL  XCB  XFB 
0.68 0.67 0.84 0.83 0.83 0.66 0.71 

El valor de MSA = 0.74 , lo cual nos indica que amerita la realizaciĂ³n de componentes (PCA) ya que su valor es mayor a 0.5

Es una medida de la idoneidad de los datos para el anĂ¡lisis factorial. La prueba mide la adecuaciĂ³n del muestreo para cada variable en el modelo y para el modelo completo. Es decir, indica la proporciĂ³n de varianza en las variables que pueden ser causadas por factores subyacentes.

Kaiser (1974) recomienda no aceptar un modelo factorial si el KMO es inferior a 0,5. Los valores altos (cercanos a 1.0) generalmente indican que un anĂ¡lisis factorial puede ser Ăºtil con los datos. Si el valor es menor que 0,50, los resultados del anĂ¡lisis factorial probablemente no serĂ¡n muy Ăºtiles.

EJEMPLO DE ACP

Como los test nos han indicado, nuestros datos estĂ¡n optimos para realizar un ACP.

Ahora si computamos los componentes principales.

Es importante que estandaricemos las variables tal como lo vimos en el esquema del ACP visto en clase, para ello usamos el argumento (scale=T) de la funciĂ³n prcomp. Esta es la forma rĂ¡pida de implementar un ACP sobre una matriz de datos.

Por su parte, con la librerĂ­a FactoMineR y factoextra, se pueden obtener resultados mĂ¡s detallados.

ACP <- prcomp(sub_base,scale=T)

Para obtener los los autovalores (eigenvalues) y la varianza explicada (individual/acumulada) para cada componente, usamos la funciĂ³n get_eigenvalue del paquete factoextra

Para esto, la funciĂ³n get_eigenvalue() se aplica directamente sobre el objeto ACP

EJEMPLO DE ACP

#install.packages("factoextra")    #Lo instalamos primero
library(factoextra)                #Cargamos la librerĂ­a
#Obtenemos los autovalores y la varianza explicada
get_eigenvalue(ACP) %>% kbl() %>% kable_classic_2(full_width = F, position = "left")
eigenvalue variance.percent cumulative.variance.percent
Dim.1 4.0270175 57.5288214 57.52882
Dim.2 1.4710583 21.0151189 78.54394
Dim.3 0.6711389 9.5876983 88.13164
Dim.4 0.3935299 5.6218562 93.75349
Dim.5 0.2227549 3.1822127 96.93571
Dim.6 0.1999740 2.8567713 99.79248
Dim.7 0.0145265 0.2075212 100.00000

Podemos conservar a los dos primeros componentes cuyos autovalores son mayores a 1 y poseen el 78.5% de la varianza acumulada

EJEMPLO DE ACP

Podemos visualizarlo con grĂ¡ficos de sedimentaciĂ³n

#Usamos la funciĂ³n fviz_eig() del paquete factoextra

fviz_eig(ACP,choice="eigenvalue", addlabels = TRUE, main="Grafico de Sedimentacion") + 
  geom_hline(yintercept=1,linetype="dashed", color = "red")

EJEMPLO DE ACP

El mismo grĂ¡fico pero mĂ¡s simple con la funciĂ³n scree() del paquete psych

scree(sub_base,factors=FALSE, main ="Grafico de Sedimentacion")

EJEMPLO DE ACP

Ahora observamos las cargas factoriales de cada variable para cada componente

cargas <- get_pca_var(ACP)  #con esta funciĂ³n obtenemos toda la informaciĂ³n

#Obtenemos las coordenas o puntuaciones de las variables en los componentes
cargas$coord %>% kbl() %>% kable_classic_2(full_width = F, position = "left") 
Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7
GOL -0.8508869 0.3692168 -0.3501079 0.0280040 -0.0894561 -0.0318981 0.0853864
NOL -0.8469388 0.3532070 -0.3761874 0.0662638 -0.0694456 -0.0066992 -0.0846412
BBH -0.7453729 0.1318295 0.5536642 0.2774978 -0.1974378 -0.0671246 -0.0019561
ZYB -0.8079815 -0.1852756 0.1716491 -0.5132791 -0.0473032 -0.1328150 -0.0065216
BNL -0.8270812 0.3462848 0.2218923 -0.0085856 0.3404975 0.1753970 0.0033023
XCB -0.5887740 -0.7338713 -0.0724061 0.0109669 -0.1262003 0.3057414 0.0032875
XFB -0.5887026 -0.7069623 -0.1286860 0.2184042 0.1919517 -0.2291815 0.0018553

Podemos usar funciĂ³n corrplot() para ver mejor las variables que mĂ¡s contribuyen a cada componente y solo usando los dos primeros

EJEMPLO DE ACP

corrplot(cargas$coord[,1:2], 
         is.corr = FALSE, method ="color", 
         tl.col = "black", col = COL1("Oranges"), 
         addCoef.col ="black", 
         number.digits=2, cl.ratio = 1, 
         col.lim=c(-1,1)) 

Observamos que las variables GOL, NOL, ZYB y BNL son las que mĂ¡s contribuyen con la formaciĂ³n del componente 1

Tambien podemos apreciar que las variables XCB y XFB son las que mĂ¡s contribuyen con la formaciĂ³n del componente 2

Observamos entonces la existencia de una oposiciĂ³n entre las longitudes y alturas (GOL, NOL, BNL) con las anchuras (XCB y XFB) del craneo, respectivamente. Esto se aprecia mucho mejor en el grĂ¡fico con las dos primeras componentes

EJEMPLO DE ACP

Con la funciĂ³n de fviz_pca_var() del paquete factoextra graficamos las variables

fviz_pca_var(ACP,repel=T)

EJEMPLO DE ACP

Tambien podemos graficar los casos sobre los componentes, para eso usamos la funciĂ³n fviz_pca_ind() del del paquete factoextra

fviz_pca_ind(ACP,label="none")

EJEMPLO DE ACP

Finalmente realizamos el biplot de variables y observaciones en el mismo plano

fviz_pca(ACP, col.ind = "blue", col.var = "red", label="var")

EJEMPLO DE ACP

FINALMENTE –> UN TRUCAZO ES USAR UNA INTERFAZ GRAFICA COMO EL PAQUETE “Factoshiny”

#install.packages("Factoshiny")   #Se instala primero
library(Factoshiny)
res <- Factoshiny(sub_base)  

EJEMPLO2 DE ACP

Usaremos la muestra aleatoria de tamaño 200 de la Encuesta nacional de Consumo Alimentario del 2014, ya trabajadas en clases anteriores (base_enca2014_200.xlsx). De ahí seleccionaremos las variables: prot_g_dia, cho_g_dia, lip_g_dia, g_sat_g_di, g_mono_g_d, g_poli_g_d y colest_mg.

#Cargamos la base
base <- read_excel("data/base_enca2014_200.xlsx")

#Seleccionamos las variables
sub_base <- base[ , c("prot_g_dia", "cho_g_dia", "lip_g_dia", "g_sat_g_di", 
                      "g_mono_g_d", "g_poli_g_d", "colest_mg")]
summary(sub_base)  #Revisamos la estadisdĂ­stica descriptiva

cor(sub_base)  #Hacemos la correlaciĂ³n
cortest.bartlett(cor(sub_base), n=200)  #test de Barlett
KMO(sub_base)  #Test KMO (Kaiser-Meyer-Olkin)
res.PCA<-PCA(sub_base,graph=FALSE)             #Hacemos el ACP con el paquete de FactoMineR
fviz_eig(res.PCA, addlabels = TRUE, main="Grafico de Sedimentacion")  #Grafico de sedimentacion
summary(res.PCA)                              #Vemos los resultados completos
write.infile(res.PCA, "acp.txt", sep = "\t") #Exportamos los resultados a un text file
corrplot(res.PCA$var$coord[ ,1:2], is.corr = FALSE, method ="color", 
         tl.col = "black", col = COL1("Greens"),addCoef.col ="white", 
         number.digits=2, cl.ratio = 1, col.lim=c(-1,1))   #Graficamos las cargas
plot.PCA(res.PCA,choix='var')                #Graficamos las variables
plot.PCA(res.PCA)                            #Graficamos los casos
fviz_pca(res.PCA, col.ind = "blue", col.var = "red", label="var")  #Hacemos el biplot